image7.png

ĐỀ TÀI CUỐI KỲ: XÂY DỰNG SEARCH ENGINE TRÊN SÀN THƯƠNG MẠI ĐIỆN TỬ AMAZON¶

GVHD: ThS. Quách Đình Hoàng¶

SVTH:¶

  • Nguyễn Minh Luân - 19110395
  • Tô Thanh Phong - 19110050
  • Tôn Thiên Thạch - 19110455
  • Đào Quyết Phong - 19110427

*Link github: https://github.com/fongto2811/IR-project

1. Abstract (Tóm tắt)¶

  • Nhận thấy, ngành thương mại điện tử đang phát triển trong thời đại hiện nay. Một lượng dữ liệu khổng lồ được sinh ra từ các sản phẩm, mặt hàng rất đa dạng trên các nền tảng này. Điều đó tạo nên những mặt tốt để khai thác nguồn dữ liệu này cho đề tài của nhóm. Một trong những nơi có thể khai thác được nguồn dữ liệu từ các hoạt động trên đến từ các sàn giao dịch thương mại điện tử, chợ thương mại điển tử như Shopee, Lazada, Tiki,... nhưng website này có một lượng lớn người cung cấp sản phẩm (người bán) và người tiêu dùng (người mua) truy cập và giao dịch mỗi ngày. Từ đó, nhóm tôi quyết định chọn 01 trong những sàn thương mại điện tử tốt nhất hiện nay – sàn Amazon, làm đối tượng chính để khai thác dữ liệu. Đề tài của nhóm là áp dụng kiến thức đã học, thực hành về information retrieval để xây dựng một Search Engine dùng Elasticsearch trên tập dữ liệu sản phẩm thu thập được trên Sàn thương mại điện tử Amazon (website – amazon.com) với kỹ thuật web scraping và ứng dụng elasticsearch

image12.png

2. Introduction (Giới thiệu)¶

  • Sàn thương mại điện tử Amazon là một trong những sàn thương mại điện tử lớn nhất thế giới thế giới với hàng triệu sản phẩm được bán trên trang web của họ. Nhưng việc tìm kiếm những sản phẩm phù hợp trên Amazon đôi khi có thể gây khó khăn cho người dùng. Vì vậy, nhóm đã xây dựng 01 công cụ tìm kiếm – search engine trên Amazon để giúp cho người dùng tìm kiếm những sản phẩm phù hợp.
  • Mục đích của search engine này được thiết kế để giúp người dùng có thể tìm kiếm và phân loại sản phẩm một cách dễ dàng và hiệu quả. Công cụ này cung cấp cho người dùng một loạt các tính năng tìm kiếm để giúp người dùng tìm kiếm sản phẩm theo nhu cầu của mình.
  • Ngoài ra, nó còn cho phép người dùng phân loại kết quả tìm kiếm theo nhiều tiêu chí khác nhau như giá cả, đánh giá sao của khách hàng, danh mục sản phẩm. Điều này giúp người dùng có thể lọc danh sách sản phẩm theo nhu cầu của họ và tìm kiếm sản phẩm phù hợp một cách nhanh chóng và dễ dàng.
  • Thêm vào đó, search engine cũng cung cấp cho người dùng các tính năng tìm kiếm khác như tìm kiếm sản phẩm theo thương hiệu, phiên bản sản phẩm và các sản phẩm liên quan.
  • Kết luận, search engine trên sàn thương mại điện tử Amazon mà nhóm xây dựng với kỳ vọng là một công cụ quan trọng và cần thiết đối với việc tìm kiếm sản phẩm trên website của Amazon, giúp việc tìm kiếm đa dạng chủng loại sản phẩm và thuận tiện cho người dùng khi sử dụng.

3. Data (Tập Dữ liệu)¶

*Giới thiệu về dữ liệu: hiện tại Amazon đang lưu trữ dữ liệu của 385 triệu sản phẩm tiêu dùng (theo thống kê từ sellerengine.com). Với lượng sản phẩm rất lớn này Amazon đã chia nhỏ thành các mặt hàng (categories) để dễ dàng phân loại và tìm kiếm, với 30 mặt hàng*, trong đó 10 mặt hàng phố biển về mặt tiêu dùng như sau:

  • Home and Kitchen – 40%
  • Sports and Outdoors – 21%
  • Toys and Games – 19%
  • Beauty and Personal Care – 19%
  • Health, Household, and Baby Care – 18%
  • Kitchen and Dining – 16%
  • Office Products – 15%
  • Garden and Outdoor – 14%
  • Tools and Home Improvement – 14%
  • Pet Supplies – 13%

(theo số liệu năm 2022 từ https://nuoptima.com/blog/amazon-product-categories )

Như vậy, giả sử chúng ta chỉ cần khai thác một mặt hàng “Home & Kitchen” (các sản phẩm gia dụng, bếp núc) thì cũng chiếm 40%, tức 154 triệu sản phẩm. Vì dữ liệu thu thập là các mặt hàng, sản phẩm nên đây sẽ là một số thuộc tính cơ bản mà nhóm sẽ thu thập từ Amazon:

image.png

4. Design and Implementation (Thiết kế và thực thi)¶

4.1. Web Scraping: nhóm sử dụng kỹ thuật này để lấy dữ liệu sản phẩm từ trang thương mại điện tử Amazon¶

  1. Thêm thư viện Selenium và các thư viện cần thiết khác.
  2. Định nghĩa các biến URL tới trang chủ amazon, SESSION phục vụ ghi log
  3. Tạo file log
  4. Khởi chạy Chrome, truy cập trang chủ amazon, ghi log
  5. Danh sách các danh mục sản phẩm trên amazon
  6. Định nghĩa các hàm để lưu đường dẫn đến các sản phẩm trên amazon
  7. Lưu tất cả sản phẩm thuộc của mỗi danh mục
  8. Đóng file log và Chrome

Chi tiết code tại file: amazon-scrapping.ipynb

image.png

4.2. Ứng dụng Elastic Search: nhóm sử dụng Elastic Search nhằm đánh chỉ mục cho tập data thu được¶

  1. Lấy dữ liệu thu về từ các link sản phẩm, thu thập các dữ liệu theo các thuộc tính cần thu thập như đã giới thiệu ở phần Dataset.
  2. Ghi log các giá trị tiền xử lý về trước khi tạo chỉ mục
  3. Kết nối với Elastic Search
  4. Tạo chỉ mục cho các sản phẩm
  5. Định nghĩa dữ liệu
  6. Load dữ liệu vào index
  7. Cài đặt phân tích
  8. Tạo hàm Ranking
  9. Kiểm thử chức năng tìm kiếm

Chi tiết code tại file: create-index

image.png

image.png

4.3. Thiết kế giao diện cho Search Engine bằng framework Django của Python¶

Thiết kế giao diện cơ bản cho công cụ tìm kiếm bằng framework Django (phiên bản 4.2.1). Ứng dụng được thiết kế dựa trên kiến trúc mô hình Model - View - Templates. image.png

Kết nối ElasticSearch vào giao diện:¶

image-2.png

Đặc tả tính năng cần thiết kế:¶

Từ nhu cầu thực tiễn, nhóm đã đặc tả một số giao diện, tính năng cần hiển thị trên công cụ tìm kiếm của nhóm:

  • Tìm kiếm từ khóa trên thanh công cụ
  • Tìm kiếm mặt hàng, loại sản phẩm trên thanh công cụ
  • Tìm kiếm theo loại sản phẩm, mặt hàng
  • Tìm kiếm theo giá cả sản phẩm
  • Tìm kiếm theo chất lượng đánh giá sao

4.4. Kết quả thu được¶

4.4.1. Giao diện Search Engine¶

Giao Diện Web

4.4.2. Tính năng tìm kiếm theo từ khóa¶

image-2.png

4.4.3. Tính năng tìm kiếm theo mặt hàng¶

image-3.png

4.4.4. Tính năng tìm kiếm theo giá cả¶

image-4.png

4.4.5. Tính năng tìm kiếm theo đánh giá sao¶

image-5.png

Kết luận¶

Mặt làm được:

  • Hiểu và phân tích được quy trình xây dựng Search Engine
  • Áp dụng được kiến thức, kỹ thuật đã học từ môn học IR vào đề tài
  • Sử dụng kỹ thuật Web Scraping để thu thập, lưu trữ và xử lý data
  • Xây dựng chỉ mục, tính năng search được bằng ElasticSearch và Kibana
  • Thiết kế được giao diện công cụ tìm kiếm cơ bản
  • Tìm kiếm được theo sản phẩm, mặt hàng, mức đánh giá và giá cả sản phẩm

Hạn chế:

  • Giao diện công cụ tìm kiếm còn đơn sơ, chưa thân thiện với người dùng
  • Còn thiếu sót các tính năng tìm kiếm
  • Chưa tạo bộ lọc sắp xếp tăng dần, giảm dần để thuận tiện tra cứu

Hướng phát triển:

  • Thiết kế giao diện tìm kiếm trực quan và tang trải nghiệm người dung hơn
  • Thêm các tính năng tìm kiếm theo vùng, sản phẩm giảm giá, màu sắc,…
  • Thêm bộ lọc sắp xếp sản phẩm theo chữ cái, giá cả, hạn giảm giá